package com.practice.dao;

import com.practice.dto.BrandDto01;
import com.practice.entity.Brand;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface IBrandDao {
    // 查询所有数据
    List<Brand> queryAllBrand();
    List<Brand> queryAllBrand2();

    // 查询详情
    // 根据id
    Brand queryBrandById(int id);

    // 查询id小于10的品牌信息
    List<Brand> queryBrandLessThan(int lt);

    // 多条件查询
    //1 @Param  2 实体对象  3 map集合
    List<Brand> queryBrandByLike(@Param("status") int status,@Param("companyName") String companyName,@Param("brandName") String brandName);
    List<Brand> queryBrandByLike2(BrandDto01 brandDto);
    List<Brand> queryBrandByLike3(Map<String,Object> map);
    // 用动态sql语句实现
    List<Brand> queryBrandByLike4(@Param("status") int status,@Param("companyName") String companyName,@Param("brandName") String brandName);

    // 多分支语句的动态SQL语句查询
    // 只能选择 品牌名称、当前状态、企业名称 这三个条件中的一个
    List<Brand> queryBrandByChoose(@Param("conditionName") String conditionName,@Param("condition") Object condition);

    // 批量添加数据
    // 使用动态sql 语句 的 foreach
    boolean addBrandByBatch(@Param("brandList") List<Brand> brandList);
    // 实现 添加时 主键返回
    boolean addBrandReturnKey(Brand brand);


    // 修改
    boolean modifyBrandById(Brand brand);
    // 修改动态字段
    // 如果哪儿个输入框没有输入内容，我们是将表中数据对应字段值替换为空白还是保留字段之前的值？答案肯定是保留之前的数据。
    boolean modifyBrandById2(Brand brand);

    // 删除
    // 删除单行数据
    boolean deleteBrandById(int id);
    // 删除多行数据
    // 使用动态sql语句 foreach 实现
    boolean deleteBrandByIdList(@Param("idList") List<Integer> idList);
}
